/*
 * InterpreteComandosServer.h
 *
 *  Created on: 24/06/2014
 *      Author: loreyalan
 */

#ifndef INTERPRETECOMANDOSSERVER_H_
#define INTERPRETECOMANDOSSERVER_H_

#include "defines.h"
//Comandos
#include "comando/ComandoServidor.h"
#include "comando/ComandoMover.h"
#include "comando/ComandoCrearFuego.h"
#include "comando/ComandoCrearBarril.h"
#include "comando/ComandoCrearMartillo.h"
#include "comando/ComandoDeleteFuego.h"
#include "comando/ComandoDeleteBarril.h"
#include "comando/ComandoDeleteMartillo.h"
#include "comando/ComandoLanzarBarril.h"
#include "comando/ComandoFinTramo.h"
#include "comando/ComandoFinNivel.h"
#include "comando/ComandoFinPartida.h"
#include "comando/ComandoActRanking.h"
#include "comando/ComandoInitNivel.h"
#include "comando/ComandoInitPartida.h"
#include "comando/ComandoComenzar.h"

#include "map"

using namespace std;

class InterpreteComandosServer {
private:
	//Instancia del interprete.
    static InterpreteComandosServer *instance;
    //Constructor privado por ser un singleton.
	InterpreteComandosServer();
	//Mapa con los comandos por accion.
	map<int, ComandoServidor *> mapaComandos;

public:
	/*Para obtener la instancia si la hay, sino generarla. */
	static InterpreteComandosServer *getInstance();
	/*Devuelve el comando que atiende la accion solicitada en la estructura t_action*/
	ComandoServidor *getComando(t_accion *action);
	/*Destructor*/
	~InterpreteComandosServer();
};

#endif /* INTERPRETECOMANDOSSERVER_H_ */
